#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

// 设置控制台颜色（白色）
// void SetColor(int color = 15) {
//     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
// }

// 设置光标位置
void SetPosition(short x, short y) {
    COORD pos = { x, y };
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}

// 清屏
void ClearScreen() {
    system("cls");
}

// 绘制游戏边框
void DrawBorder() {
    // 上边框
    SetPosition(0, 0);
    cout << "╔";
    for (int i = 0; i < 78; i++) cout << "═";
    cout << "╗";

    // 侧边框
    for (int i = 1; i < 39; i++) {
        SetPosition(0, i);
        cout << "║";
        SetPosition(79, i);
        cout << "║";
    }

    // 下边框
    SetPosition(0, 39);
    cout << "╚";
    for (int i = 0; i < 78; i++) cout << "═";
    cout << "╝";
}

// 打印蛇的字符画
void printsnake() {
    ClearScreen();
    DrawBorder();

    // 居中显示标题
    SetPosition(34, 5);
    cout << "贪吃蛇游戏";

    // 蛇形图案
    SetPosition(35, 8);
    cout << "    ____";
    SetPosition(35, 9);
    cout << "   / ° °\\";
    SetPosition(35, 10);
    cout << "   \\  ---<";
    SetPosition(35, 11);
    cout << "    \\  /";
    SetPosition(39, 11);
    cout << "~~~~~~~~~~~";
    SetPosition(38, 12);
    cout << "~~~~~~~~~~~~~";
}

// 显示菜单
void welcometogame() {
    SetPosition(34, 15);
    cout << "1. 开始游戏";
    SetPosition(34, 16);
    cout << "2. 游戏说明";
    SetPosition(34, 17);
    cout << "3. 历史分数";
    SetPosition(34, 18);
    cout << "4. 退出游戏";

    SetPosition(30, 20);
    cout << "请选择操作（1-4）: ";

    while (true) {
        char key = _getch();
        if (key >= '1' && key <= '4') {
            SetPosition(50, 20);
            cout << key;

            switch (key) {
            case '1':
                SetPosition(34, 22);
                cout << "游戏即将开始...";
                Sleep(1000);
                return;
            case '4':
                ClearScreen();
                exit(0);
            }
            break;
        }
    }
}

// 封装后的主逻辑函数
void welcome_menu() {
    // 设置控制台窗口大小
    system("mode con cols=100 lines=80");

    // 隐藏光标
    CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

    printsnake();
    welcometogame();

}

// int main() {
//     RunGame();
//     return 0;
// }